구현 유형 접근법

접근 순서

  1. 기능 찾기 — 문제에서 요구하는 동작을 목록으로 분리
  2. 상세 설계 — 각 기능에 살 붙이기 (조건, 순서, 예외)
  3. 시간복잡도 추정 — 풀기 전에 O(?) 계산해서 가능한지 확인
  4. 구현 — 기능 단위로 함수 분리하며 작성
  5. 경계 조건 검증 — 최솟값, 최댓값, 빈 입력 등 테스트

시간복잡도 기준 (1억 연산 ≈ 1초)

N 범위 허용 복잡도
N ≤ 100 O(N³)
N ≤ 1,000 O(N²)
N ≤ 100,000 O(N log N)
N ≤ 1,000,000 O(N)

자주 쓰는 패턴

방향 벡터 (상하좌우)

int[] dx = {-1, 1, 0, 0};
int[] dy = {0, 0, -1, 1};

범위 체크

boolean inRange(int x, int y, int N, int M) {
    return x >= 0 && x < N && y >= 0 && y < M;
}

90도 회전 (시계방향)

// (x, y) → (y, N-1-x)
int nx = y;
int ny = N - 1 - x;

체크리스트


주의사항